///////////////////////////////////////////////////////////////////////////////////////////////////
//this file is automatically generated, do not modify.
///////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef __XML_test_gb2312_H__
#define __XML_test_gb2312_H__

#include "SlimXml.h"
#include <vector>

namespace test_gb2312
{
///////////////////////////////////////////////////////////////////////////////////////////////////
struct Property
{
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string Name;
	std::string Value;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Window
{
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string           Type;
	std::string           Name;
	std::vector<Property> Properties;
	std::vector<Window>   Windows;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Light
{
	Light()
		:	Range( 0.0f )
		,	AttenConst( 0.0f )
		,	AttenLinear( 0.0f )
		,	AttenQuad( 0.0f )
	{
	}
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string Position;
	std::string Bone;
	float       Range;
	std::string Color;
	float       AttenConst;
	float       AttenLinear;
	float       AttenQuad;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Event
{
	Event()
		:	Time( 0.0f )
	{
	}
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	float                    Time;
	std::string              Type;
	std::vector<std::string> Params;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Animation
{
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string        Slot;
	std::string        Filename;
	std::vector<Event> Events;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Part
{
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string Slot;
	std::string Filename;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
struct Model
{
	void read( const slim::XmlNode* node );
	void write( slim::XmlNode* node ) const;

	std::string            Skeleton;
	std::vector<Part>      Parts;
	std::vector<Animation> Animations;
	std::vector<Light>     Lights;
	Window                 Window;
};

}

#endif